#include <iostream>
using namespace std;

// cin如何判断输入的数据是否符合要求  scanf()判断返回值   scanf根据返回值判断输入是否成功

int main()
{
    int num;
    cout << "请输入一个整数: ";
    // if (cin >> num)
    // {
    //     // 输入成功
    //     cout << "输入有效: " << num << endl;
    // }
    // else
    // {
    //     // 输入失败
    //     cout << "输入无效" << endl;
    //     cin.clear();            // 清除错误状态
    //     cin.ignore(1024, '\n'); // 忽略缓冲区中的错误输入
    // }

    cin >> num;
    if (cin.fail()) // cin.good()  good()返回true，表示输入成功
    {
        // 输入失败
        cout << "输入无效" << endl;
        cin.clear();            // 清除错误状态
        cin.ignore(1024, '\n'); // 忽略缓冲区中的错误输入
    }
    else
    {
        // 输入成功
        cout << "输入有效: " << num << endl;
    }

    return 0;
}

// int ret = scanf("%d", &num);

// if (ret == 1)
// {
//     // 成功读取一个整数
//     printf("你输入的整数是: %d\n", num);
// }
// else if (ret == 0)
// {
//     // 输入格式不匹配
//     printf("输入不符合要求！不是有效的整数\n");
//     // 清除缓冲区中的错误输入
//     while (getchar() != '\n')
//         ;
// }
// else
// {
//     // 遇到EOF
//     printf("输入结束\n");
// }